}
if (s->io_buffer_index >= s->io_buffer_size && s->nsector == 0) {
s->status = READY_STAT | SEEK_STAT;
+ s->bmdma->status &= ~BM_STATUS_DMAING;
+ s->bmdma->status |= BM_STATUS_INT;
ide_set_irq(s);
#ifdef DEBUG_IDE_ATAPI
printf("dma status=0x%x\n", s->status);
if (n == 0) {
/* end of transfer */
s->status = READY_STAT | SEEK_STAT;
+ s->bmdma->status &= ~BM_STATUS_DMAING;
+ s->bmdma->status |= BM_STATUS_INT;
ide_set_irq(s);
return 0;
}
if (s->packet_transfer_size <= 0) {
s->status = READY_STAT;
s->nsector = (s->nsector & ~7) | ATAPI_INT_REASON_IO | ATAPI_INT_REASON_CD;
+ s->bmdma->status &= ~BM_STATUS_DMAING;
+ s->bmdma->status |= BM_STATUS_INT;
ide_set_irq(s);
#ifdef DEBUG_IDE_ATAPI
printf("dma status=0x%x\n", s->status);
}
/* end of transfer */
the_end:
- bm->status &= ~BM_STATUS_DMAING;
- bm->status |= BM_STATUS_INT;
bm->dma_cb = NULL;
bm->ide_if = NULL;
}